scrolledwindow: Cancel kinetic/overshoot animation on captured scroll events
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 2 Mar 2015 16:01:21 +0000 (17:01 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 2 Mar 2015 16:42:04 +0000 (17:42 +0100)
This ensures the animation is cancelled if the child widget happens to
GDK_EVENT_STOP scroll events.

https://bugzilla.gnome.org/show_bug.cgi?id=745315

gtk/gtkscrolledwindow.c

index 893a1ac517aa7f28037f27e674fcbad25d6c08ef..88ba47d219212aef0066e2fc3a2a87ef52bc7354 100644 (file)
@@ -1071,6 +1071,12 @@ captured_event_cb (GtkWidget *widget,
   sw = GTK_SCROLLED_WINDOW (widget);
   priv = sw->priv;
 
+  if (event->type == GDK_SCROLL)
+    {
+      gtk_scrolled_window_cancel_deceleration (sw);
+      return GDK_EVENT_PROPAGATE;
+    }
+
   if (!priv->use_indicators)
     return GDK_EVENT_PROPAGATE;
 
@@ -2993,7 +2999,6 @@ gtk_scrolled_window_scroll_event (GtkWidget      *widget,
 
   if (handled)
     {
-      gtk_scrolled_window_cancel_deceleration (scrolled_window);
       gtk_scrolled_window_invalidate_overshoot (scrolled_window);
 
       if (priv->scroll_events_overshoot_id)